import java.util.Scanner;
import java.util.Arrays;
public class test {
   /* 给你一个下标从 0 开始、长度为 n 的整数数组 nums ，和两个整数 lower 和 upper ，返回 公平数对的数目 。
    如果 (i, j) 数对满足以下情况，则认为它是一个 公平数对 ：
            0 <= i < j < n，且
    lower <= nums[i] + nums[j] <= upper*/
   public static long seek(int[] nums,int lower,int upper){
       Arrays.sort(nums);
       int count=0;
       int left=0;
       int right=nums.length-1;
       //记录<=upper的对数
       while(left<right){
           if(nums[left]+nums[right]<=upper){
               count+=(right-left);
               left++;
           }
           else right--;
       }
       int result=0;
       left=0;
       right=nums.length-1;
       //记录<lower的对数
       while(left<right){
           if(nums[left]+nums[right]<lower){
               result+=right-left;
               left++;
           }
           else right--;
       }
       return count-result;
   }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] nums=new int[n];
        for(int i=0;i<n;i++){
            nums[i]=sc.nextInt();
        }
        int lower=sc.nextInt();
        int upper=sc.nextInt();
        long resultcount=seek(nums,lower,upper);
        System.out.println(resultcount);
    }
}
